=--------------------------======+#%%%%%@@@@%%@@@@@@%%%%%%#%%%%%%%%%%
=======-------------=-==-=====+#%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%
========================+++**#%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%
+=====++++++++++++++****###############%@%%@@%@%%%%%%%%%%%%%%%%%%%%%%
+++++++++++**********+****############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+***#******+********##*#*******######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####*##**************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***##**####****##***********+++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***+++********************+==+***##*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********#####**#********+******#########%%%%%%%%###***#%%%%%%%%%%%
****#######################*##***####**################**++%%%%%%%%%%
###############*#####*#######################%###########**#########%
######%#%%%%%###%#%%%%%#%%%##%%%%%%%%%%%%%%####%%%%%%%%%############%
%%%%%%%%%%%%%#####%%%%#%%%%%%%%%%%%%%%%%%%#####**##%%%%#############%
%%%%%########**###################*############*++####%######%%%%%%%%
##################%%%%###%%%%%%%%%%#####%%%%###*++%%%##%%%%%%%%%%%%%%
%#%%%%%%########%%%%%%%%##%%%%%%%%%#*%####%#*#**+%%%%%%%%%%%%%%%%%%%%
%%%%%%%#####%#####%#%%%%%%%%%%%%%%%%##%%%%#%##*+=%%%%%%%%%%%%%%%%%%%@
%%%%%############%%%%%%%%%%%%%%%%%%%%%###**#%%#**%%%%%%%%%%%%%%%%%%%%
%%%%#######%###%%%%%%%%%%%%%%%%%%%%%%%%##***%%%#**#%%%%%%%%%%%%%%%%%%
%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***#%%%####%%**#%%%%%%%%%%%
%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+#%%##*#%%%%#%%%%%%%%%%%%
@@@@@%%%%%%%@@%%%%@@@@@@@@@@@@@%%%@@%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@@@